/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package megaboletosserver;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
//import clases.Cliente;
//import megaboletosclient;

/**
 *
 * @author Miguel
 */
public class Megaboletosserver {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        int Puerto=5000;
        Utileria util=new Utileria();
        DataOutputStream salida;
        DataInputStream entrada;
        Socket skCliente;
        String datoSalida="";
        String datoEntrada="";
        String peticion="";
        String peticion2="";
        
        System.out.println("----Se ha iniciado el servidor----");
        try{
            ServerSocket skServidor=new ServerSocket(Puerto);   
            while(true){
                try{
                    skCliente=skServidor.accept(); 
                              
                    System.out.println("--Se ha establecido una conexion--");
                    
                    entrada=new DataInputStream(new BufferedInputStream(skCliente.getInputStream())); 
                    peticion2=entrada.readUTF();                  
                    System.out.println(peticion2); 
                    
                    salida=new DataOutputStream(skCliente.getOutputStream());  
                    salida.flush();
                    if(peticion2.length()>15){
                        peticion=peticion2.split(":")[0];
                        datoEntrada=peticion2.split(":")[1];
                        System.out.println(peticion);
                    }
                    else{
                        peticion=peticion2;
                    }
                    switch(peticion){
                        case "getClientes":
                            datoSalida=util.cargar("Clientes.txt");
                        break;
                            
                        case "getEventos":
                            datoSalida=util.cargar("Eventos.txt");
                        break;
                            
                        case "getBoletos":
                            datoSalida=util.cargar("Boletos.txt");
                        break;
                            
                        case "getAdmones":
                            datoSalida=util.cargar("Administradores.txt");
                        break;
                            
                        case "guardaC":
                            util.guardar(datoEntrada, "Clientes.txt");
                        break;
                            
                        case "guardaE":
                            util.guardar(datoEntrada, "Eventos.txt");
                        break;
                            
                        case "guardaB":
                            util.guardar(datoEntrada, "Boletos.txt");
                        break;
                            
                        case "borrarAlCliente":
                            util.eliminarUsuario(datoEntrada);
                        break;
                            
                        case "modificarAlCliente":
                            util.modificarCliente(datoEntrada);
                        break;
                            
                        case "modificaEvento":
                            util.modificarEvento(datoEntrada);
                        break;
                        
                    }
                    salida.writeUTF(datoSalida);                  
                    salida.flush();
               
                    skCliente.close();
                    System.out.println("--Se cerro una conexion--");
                }
                catch(Exception e){
                    System.err.println("se encontro un error 2: "+e+" "+e.getCause());
                }
            }
            
        //System.out.println("No se pudo establecer la conexion");
        }
        catch(Exception e){
            System.err.println("se encontro un error: "+e+" "+e.getCause());
            //System.out.println(e.getCause());
        }
            
    }   
    
    
}